package aplicacao.movel.locais;

import java.util.List;

import br.usp.fsi.entity.Local;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import aplicacao.movel.ActivityGenerica;
import aplicacao.movel.R;
import aplicacao.movel.R.botao;
import aplicacao.movel.R.id;
import aplicacao.movel.R.layout;
import aplicacao.movel.webservice.SessaoLogada;
import aplicacao.movel.webservice.WebServiceREST;

public class LocaisActivity extends ActivityGenerica {

	private Button addLocal;
	private Button proxLocal;
	private Spinner spinnerLocais;
	private Intent editaCriaLocal;
	private Intent detalhesLocal;

	protected void telaLocais() {
		setContentView(R.layout.locais);

		proxLocal = (Button) findViewById(R.botao.btpox_local);
		addLocal = (Button) findViewById(R.botao.btcriarnovolocal);
		spinnerLocais = (Spinner) findViewById(R.id.spinner1);
		editaCriaLocal = new Intent(this, EditaCriaLocalActivity.class);
		detalhesLocal = new Intent(this, DetalhesLocalActivity.class);

		try {
			ArrayAdapter<Local> adapter = criarArrayAdapterDeLocais();
			spinnerLocais.setAdapter(adapter);
			//TODO isso funciona pra vc Felipe? [Bah]
			spinnerLocais.setOnItemSelectedListener(new OnItemSelectedListener() {
				public void onItemSelected(AdapterView parent, View view, int pos, long id) {
					Local local = (Local) parent.getSelectedItem();
					Bundle localParam = new Bundle();
					localParam.putSerializable("localAEditar", local);
					detalhesLocal.putExtras(localParam);
				}

				public void onNothingSelected(AdapterView arg0) {
				}
			});
		} catch (Exception e) {
			// TODO tem que dar um aviso disso
			e.printStackTrace();
		}

		addLocal.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				Bundle fakeBundle = new Bundle();
				fakeBundle.putSerializable("localAEditar", null);
				startActivityForResult(editaCriaLocal, 0);
			}
		});
		
		proxLocal.setOnClickListener(new View.OnClickListener (){
			public void onClick (View V){
				startActivity (detalhesLocal);
			}
		});

	}

	@Override
	public void onCreate(Bundle icile) {
		super.onCreate(icile);
		telaLocais();
	}

	/**
	 * Metodo que � chamado quando uma activity chamada por esta (no caso
	 * EditaCriaLocalActivity) termina.
	 */
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		try {
			ArrayAdapter<Local> adapter = criarArrayAdapterDeLocais();
			spinnerLocais.setAdapter(adapter);
		} catch (Exception e) {
			e.printStackTrace();
			gerarToast(e.getMessage());
		}
	}
	
	private ArrayAdapter<Local> criarArrayAdapterDeLocais() throws Exception {
		Local localParametro = new Local();
		localParametro.setIdEmpresa(SessaoLogada.sessao.getEmpresa().getIdEmpresa());
		List<Local> listaLocais;
		listaLocais = new WebServiceREST().obterVariosPorParametro(localParametro);

		ArrayAdapter<Local> adapter = new ArrayAdapter<Local>(this, android.R.layout.simple_spinner_item, listaLocais);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
		return adapter;
	}

}
